package rappelEmail;

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;

import javax.mail.internet.AddressException;
import javax.mail.NoSuchProviderException;

import java.io.IOException;

import loansManagement.Loan;
import loansManagement.Reservation;


public class SendEmail{
	
	public static void sendReservationMail(Reservation r) {
		Properties props = new Properties();
		props.put("mail.smtp.host", "smtp.gmail.com");
		props.put("mail.smtp.socketFactory.port", "465");
		props.put("mail.smtp.socketFactory.class",
				"javax.net.ssl.SSLSocketFactory");
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.port", "465");

		

		Session session = Session.getDefaultInstance(props,
				new javax.mail.Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication("saius1er","serveur2011");
			}
		});
		

		try {

			Message message = new MimeMessage(session);

			message.setFrom(new InternetAddress("saius1er@gmail.com"));
			message.setRecipients(Message.RecipientType.TO,
					InternetAddress.parse(r.getSubscriber().getEmail()));
			
			message.setSubject("Votre livre est disponible");


			MimeBodyPart mbp1 = new MimeBodyPart();
			mbp1.setText("Bonjour ,\n Nous vous informons que le media que vous avez\n" +
					" demandé "+"'"+r.getMedia().getTitle()+"'"+" est maintenant disponible et vous avez jusqu'au \n "+
					r.getEndAvailibilityDate().getTime()
					+"\n pour passer le récupérer");

			MimeMultipart mp = new MimeMultipart();
			mp.addBodyPart(mbp1);

		message.setContent(mp);

			Transport.send(message);

			System.out.println("Done");

		}
		
		catch(NoSuchProviderException e) {
			System.err.println("Pas de transport disponible pour ce protocole");
			System.err.println(e);
		}
		catch(AddressException e) {
			System.err.println("Adresse invalide");
			System.err.println(e);
		}
		catch(MessagingException e) {
			System.err.println("Erreur dans le message");
			System.err.println(e);
		}
	}

	public static void sendLoanMail(Loan l) {
		// TODO Auto-generated method stub
		Properties props = new Properties();
		props.put("mail.smtp.host", "smtp.gmail.com");
		props.put("mail.smtp.socketFactory.port", "465");
		props.put("mail.smtp.socketFactory.class",
				"javax.net.ssl.SSLSocketFactory");
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.port", "465");

		

		Session session = Session.getDefaultInstance(props,
				new javax.mail.Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication("saius1er","serveur2011");
			}
		});



		try {

			Message message = new MimeMessage(session);

			message.setFrom(new InternetAddress("saius1er@gmail.com"));
			message.setRecipients(Message.RecipientType.TO,
					InternetAddress.parse(l.getLender().getEmail()));
			
			message.setSubject("Votre livre est disponible");


			MimeBodyPart mbp1 = new MimeBodyPart();
			mbp1.setText("Bonjour ,\n Nous vous informons que la date de rendu de votre média que vous avez\n" +
					" emprunté "+"'"+l.getMedia().getTitle()+"'"+" initiallement prévu pour le "+l.getReturnDate().getTime()+" est dépassé.\n "+
					"\n Veuillez nous rapporter si possible le média");

			MimeMultipart mp = new MimeMultipart();
			mp.addBodyPart(mbp1);

		message.setContent(mp);

			Transport.send(message);

			System.out.println("Done");

		}
		
		catch(NoSuchProviderException e) {
			System.err.println("Pas de transport disponible pour ce protocole");
			System.err.println(e);
		}
		catch(AddressException e) {
			System.err.println("Adresse invalide");
			System.err.println(e);
		}
		catch(MessagingException e) {
			System.err.println("Erreur dans le message");
			System.err.println(e);
		}
	}

}


